package com.ruoyi.veterinary.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 进货管理对象 vet_purchase
 * 
 * @author ruoyi
 * @date 2024-01-19
 */
public class VetPurchase extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 采购ID */
    private Long purchaseId;

    /** 采购单号（系统自动生成，如：CG20250819001） */
    @Excel(name = "采购单号")
    private String purchaseOrderNo;

    /** 供应商ID */
    @Excel(name = "供应商ID")
    private Long supplierId;

    /** 供应商名称 */
    @Excel(name = "供应商名称")
    private String supplierName;

    /** 药品名称 */
    @Excel(name = "药品名称")
    private String drugName;

    /** 规格 */
    @Excel(name = "规格")
    private String drugSpecification;

    /** 药品厂家ID */
    @Excel(name = "药品厂家ID")
    private Long manufacturerId;

    /** 药品厂家名称 */
    @Excel(name = "药品厂家")
    private String manufacturerName;

    /** 兽药批号 */
    @Excel(name = "兽药批号")
    private String batchNumber;

    /** 进价（含返利） */
    @Excel(name = "进价")
    private BigDecimal purchasePrice;

    /** 数量 */
    @Excel(name = "数量")
    private Integer quantity;

    /** 采购日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "采购日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date purchaseDate;

    /** 验收状态：待验收/通过/失败 */
    @Excel(name = "验收状态", readConverterExp = "待验收=待验收,通过=通过,失败=失败")
    private String acceptanceStatus;

    /** 验收结果（外观/批号/有效期验收结果） */
    @Excel(name = "验收结果")
    private String acceptanceResult;

    /** 验收人 */
    @Excel(name = "验收人")
    private String acceptor;

    /** 验收日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "验收日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date acceptanceDate;

    /** 发票号 */
    @Excel(name = "发票号")
    private String invoiceNumber;

    /** 发票图片路径 */
    @Excel(name = "发票图片路径")
    private String invoiceImage;

    /** 总金额 */
    /** 总金额 */
    @Excel(name = "总金额")
    private BigDecimal totalAmount;

    /** 休药期（天） */
    @Excel(name = "休药期")
    private Integer withdrawalPeriod;

    /** 有效期至 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "有效期至", width = 30, dateFormat = "yyyy-MM-dd")
    private Date expiryDate;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    public void setPurchaseId(Long purchaseId)
    {
        this.purchaseId = purchaseId;
    }

    public Long getPurchaseId() 
    {
        return purchaseId;
    }
    public void setPurchaseOrderNo(String purchaseOrderNo) 
    {
        this.purchaseOrderNo = purchaseOrderNo;
    }

    public String getPurchaseOrderNo() 
    {
        return purchaseOrderNo;
    }
    public void setSupplierId(Long supplierId) 
    {
        this.supplierId = supplierId;
    }

    public Long getSupplierId() 
    {
        return supplierId;
    }
    public void setSupplierName(String supplierName) 
    {
        this.supplierName = supplierName;
    }

    public String getSupplierName() 
    {
        return supplierName;
    }
    public void setDrugName(String drugName) 
    {
        this.drugName = drugName;
    }

    public String getDrugName() 
    {
        return drugName;
    }
    public void setDrugSpecification(String drugSpecification) 
    {
        this.drugSpecification = drugSpecification;
    }

    public String getDrugSpecification() 
    {
        return drugSpecification;
    }
    public void setManufacturerId(Long manufacturerId) 
    {
        this.manufacturerId = manufacturerId;
    }

    public Long getManufacturerId() 
    {
        return manufacturerId;
    }
    public void setManufacturerName(String manufacturerName) 
    {
        this.manufacturerName = manufacturerName;
    }

    public String getManufacturerName() 
    {
        return manufacturerName;
    }
    public void setBatchNumber(String batchNumber) 
    {
        this.batchNumber = batchNumber;
    }

    public String getBatchNumber() 
    {
        return batchNumber;
    }
    public void setPurchasePrice(BigDecimal purchasePrice) 
    {
        this.purchasePrice = purchasePrice;
    }

    public BigDecimal getPurchasePrice() 
    {
        return purchasePrice;
    }
    public void setQuantity(Integer quantity) 
    {
        this.quantity = quantity;
    }

    public Integer getQuantity() 
    {
        return quantity;
    }
    public void setPurchaseDate(Date purchaseDate) 
    {
        this.purchaseDate = purchaseDate;
    }

    public Date getPurchaseDate() 
    {
        return purchaseDate;
    }
    public void setAcceptanceStatus(String acceptanceStatus) 
    {
        this.acceptanceStatus = acceptanceStatus;
    }

    public String getAcceptanceStatus() 
    {
        return acceptanceStatus;
    }
    public void setAcceptanceResult(String acceptanceResult) 
    {
        this.acceptanceResult = acceptanceResult;
    }

    public String getAcceptanceResult() 
    {
        return acceptanceResult;
    }
    public void setAcceptor(String acceptor) 
    {
        this.acceptor = acceptor;
    }

    public String getAcceptor() 
    {
        return acceptor;
    }
    public void setAcceptanceDate(Date acceptanceDate) 
    {
        this.acceptanceDate = acceptanceDate;
    }

    public Date getAcceptanceDate() 
    {
        return acceptanceDate;
    }
    public void setInvoiceNumber(String invoiceNumber) 
    {
        this.invoiceNumber = invoiceNumber;
    }

    public String getInvoiceNumber() 
    {
        return invoiceNumber;
    }
    public void setInvoiceImage(String invoiceImage) 
    {
        this.invoiceImage = invoiceImage;
    }

    public String getInvoiceImage() 
    {
        return invoiceImage;
    }
    public void setTotalAmount(BigDecimal totalAmount) 
    {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getTotalAmount() 
    {
        return totalAmount;
    }

    public void setWithdrawalPeriod(Integer withdrawalPeriod) 
    {
        this.withdrawalPeriod = withdrawalPeriod;
    }

    public Integer getWithdrawalPeriod() 
    {
        return withdrawalPeriod;
    }
    
    public void setExpiryDate(Date expiryDate) 
    {
        this.expiryDate = expiryDate;
    }

    public Date getExpiryDate() 
    {
        return expiryDate;
    }
    
    public void setDelFlag(String delFlag) 
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag() 
    {
        return delFlag;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("purchaseId", getPurchaseId())
            .append("purchaseOrderNo", getPurchaseOrderNo())
            .append("supplierId", getSupplierId())
            .append("supplierName", getSupplierName())
            .append("drugName", getDrugName())
            .append("drugSpecification", getDrugSpecification())
            .append("manufacturerId", getManufacturerId())
            .append("manufacturerName", getManufacturerName())
            .append("batchNumber", getBatchNumber())
            .append("purchasePrice", getPurchasePrice())
            .append("quantity", getQuantity())
            .append("purchaseDate", getPurchaseDate())
            .append("acceptanceStatus", getAcceptanceStatus())
            .append("acceptanceResult", getAcceptanceResult())
            .append("acceptor", getAcceptor())
            .append("acceptanceDate", getAcceptanceDate())
            .append("invoiceNumber", getInvoiceNumber())
            .append("invoiceImage", getInvoiceImage())
            .append("totalAmount", getTotalAmount())
            .append("totalAmount", getTotalAmount())
            .append("withdrawalPeriod", getWithdrawalPeriod())
            .append("expiryDate", getExpiryDate())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}